/**
 * @项目名:vip
 * @版本信息:1.0
 * @date:2016年5月13日-上午12:02:33
 * Copyright (c) 2016建飞科联公司-版权所有
 *
 */
package com.feeyo.monitor.utils;

import java.util.ArrayList;
import java.util.List;

import com.feeyo.monitor.domain.Department;


/**生成部门树工具类
 * @Author <a href="mailto:bliulei@variflight.com">liulei</a>
 * @Description Created by liulei on 2017/5/15 下午6:02.
 */
public class TreeNodeUtil {

	/**
	 * @Title: getfatherNode
	 * @Description 方法描述: 父节点
	 * @return 返回类型：List<DeptTreeNode>
	 * @throws
	 * @date 最后修改时间：2015年6月9日 下午6:39:26
	 */
	public final static List<DeptTreeNode> getfatherNode(List<DeptTreeNode> treeDataList) {
		List<DeptTreeNode> newTreeDataList = new ArrayList<DeptTreeNode>();
		for (DeptTreeNode deptTreeNode : treeDataList) {
			if (deptTreeNode.getParentid() == null) {
                System.out.println("getParentid->"+deptTreeNode.getId());
				// 获取父节点下的子节点
                deptTreeNode.setChildren(getChildrenNode(deptTreeNode.getId(), treeDataList));
				newTreeDataList.add(deptTreeNode);
			}
		}
		return newTreeDataList;
	}

	/**
	 * @Title: getChildrenNode
	 * @Description 方法描述: 子节点
	 * @return 返回类型：List<DeptTreeNode>
	 * @throws
	 * @date 最后修改时间：2015年6月9日 下午6:39:50
	 */
	private final static List<DeptTreeNode> getChildrenNode(String pid,
			List<DeptTreeNode> treeDataList) {
		List<DeptTreeNode> newTreeDataList = new ArrayList<DeptTreeNode>();
		for (DeptTreeNode DeptTreeNode : treeDataList) {
			if (DeptTreeNode.getParentid() == null)
				continue;
			// 这是一个子节点
			if (DeptTreeNode.getParentid().equals(pid)) {
				// 递归获取子节点下的子节点
				DeptTreeNode.setChildren(getChildrenNode(DeptTreeNode.getId(),
						treeDataList));
				newTreeDataList.add(DeptTreeNode);
			}
		}
		return newTreeDataList;
	}

	public static List<DeptTreeNode> buildTree(List<Department> departments) {
		List<DeptTreeNode> treeDataList = new ArrayList<DeptTreeNode>();
		for (Department department : departments) {
            DeptTreeNode treeData = new DeptTreeNode();

			treeData.setId(department.getId() + "");
            treeData.setParentid(department.getParentid());
			treeData.setCode(department.getCode());
			treeData.setName(department.getName());
			treeDataList.add(treeData);
		}
        System.out.println("treeDataList->"+treeDataList.size());
		// 最后得到结果集,经过FirstJSON转换后就可得所需的json格式
		return TreeNodeUtil.getfatherNode(treeDataList);
	}

}